package org.fenixsoft.jvm.chapter2;

public class RuntimeConstantPoolOOM_2 {

    public static void main(String[] args) {
        /**
         * jdk7之后已经将字符串常量池移动到堆中，
         * str1引用指向存放于堆中的字符串常量池中的“计算机软件”这个字符串对象。
         * str1.intern()返回的是“计算机软件”这个字符串对象第一次出现的引用。
         *
         * 而在这里“计算机软件”是第一次出现，所以str1.intern()返回的就是str1，所以是true
         */
        String str1 = new StringBuilder("计算机").append("软件").toString();
        System.out.println(str1.intern() == str1);

        /**
         * "java"这个字符串对象已经出现在堆中，所以str2.intern()返回的引用不是str2，所以是false
         */
        String str2 = new StringBuilder("ja").append("va").toString();
        System.out.println(str2.intern() == str2);
    }
}
